A Format call takes the
following arguments:

destination control-string &rest arguments

Format directives can
be classified by what
they process:

Text
~A ~S ~P ~C ~% ~& ~| ~~ ~T 

Integers
~D ~B ~O ~X ~R

Floating Point Numbers
~F ~E ~G ~$  

Flow of Control
~* ~? ~(str~)
~[str0;...] ~; ~{sr}
~<> ~^ ~<newline>

Each format directive
may take the modifiers
 : and/or @

Examples:
 (format nil "Hi ~5,,,'*:A." "foo") => "Hi **foo."
 (format nil "Hi ~,,#,'*S." "foo") => "Hi \"foo\"*."
 (format nil "~D Bobb~:@P." 7) => "7 Bobbies."
 (format nil "~:B" 8) => "1,000"
 The first arg is the destination, a stream, or when nil, a string.
 The number 5 is considered a parameter to ~A in the first example.
 The colon is considered a modifier to ~A in the first example.

One can put V or # in
place of any parameter:
V=get parm from arg-list
#=parm is number of args
  left to be processed.

What follows is a table
composed of items containing:
 format directive
 mnemonic aid
 parameters
 modifiers

~A Ascii        mincol,colinc,minpad,padchar  :@ :makes nil be ()  @ makes pad be printed on the Right hand side instead of the default left hand side.
~S S-epression  mincol,colinc,minpad,padchar  :@ : and @ are same as in ~A
~P Plural                                     :@ : makes it go back one arg @ deals with y-cases instead of s cases
~C Character                                  :@ : spells name of control bits. @ prints characters LISP READably. :@ has unclear semantics in CCL.
~% Newline      howmany                       
~& Freshline    howmany                       
~| Page         howmany                       
~~ Tilde        howmany                       
~T Tabulate     colnum,colinc                  @ @ does relative tabulation.
~<str~> Justify mincol,colinc,minpad,padchar  :@ : makes spaces come before first element. @ makes spaces come after last element. :@ centers the text.

~D Decimal      mincol,padchar,commachar      :@ :puts commas every third digit. @ makes the sign be always printed.
~B Binary       mincol,padchar,commachar      :@ : and @ same as ~D
~O Octal        mincol,padchar,commachar      :@ : and @ same as ~D
~X Hexadecimal  mincol,padchar,commachar      :@ : and @ same as ~D
~R Radix        radix,mincol,padchar,commachar:@ If there is a parameter : and @ act same as in ~D.
   English-number                                If no parameters, ~R prints its arg as a cardinal English number (four) : puts out number ordinaly (fourth). @ puts out number in Roman numerals (IV).  :@ puts out number in OLD Roman numerals (IIII).

~F Fixed-fp     w,d,k,overflow,padchar         @ @ makes sign be always printed.
~E Exponential-fp w,d,e,k,overflowchar,padchar,exponentchar @ @ same as in ~F
~G General-fp     w,d,e,k,overflowchar,padchar,exponentchar @ @ same as in ~F
~$ Dollars-fp   d,n,w,padchar                 :@ @ same as in ~F

~<newline>  Ignore-the-inputed-newline        :@ : leaves whitespace following <newline> intact. @ leaves <newline> intact but ignores the following whitespace.
~* Skip-args    howmany                       :@ : ignores backwards and reuses those args. @ performs absolute goto in arg number to go to.
~? Indirection                                 @ @ makes only one arg be directly consumed.
~(str~) Case-Conversion                       :@ : capitalizes all words. @ capitalized the first word and FORCES the rest to lower case. :@ converts every lowrecase to corresponding uppercase character.
~[str0~;str1~;...strn~] Conditional-expression  which-string? :@ : does a [false~;true~] conditionalization. @ tests the argument if it is non nil it is not used up by ~[ and the clause true is processed. If the arg is nil it is used up but the clause true is not executed.
~; Clause-separator-in-~[-and-~<-constructs
~{str~} Iteration                             :@ normally the arg should be a list that is used over and over in the repetition. With a : arg should be a list of sublists. on each iteration, a different sublist is used. @ makes the remaining arguments be used as args in the repetition of the string str.
~^ Escape                  1-arg,2-arg,3-arg  :  : terminates entire iteration process not just the current iteration. 
